package com.example.student_manager_backend.repository;

import com.example.student_manager_backend.entity.Class;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 班级数据访问层
 * 提供对班级实体的基本CRUD操作和自定义查询方法
 */
@Repository
public interface ClassRepository extends JpaRepository<Class, String>, JpaSpecificationExecutor<Class> {
    
    /**
     * 根据班级名称模糊查询班级列表
     *
     * @param name 班级名称
     * @return 班级列表
     */
    List<Class> findByNameContaining(String name);

    /**
     * 根据年级查询班级列表
     *
     * @param grade 年级
     * @return 班级列表
     */
    List<Class> findByGrade(String grade);

    /**
     * 根据专业查询班级列表
     *
     * @param major 专业
     * @return 班级列表
     */
    List<Class> findByMajor(String major);

    /**
     * 根据班主任查询班级列表
     *
     * @param teacher 班主任
     * @return 班级列表
     */
    List<Class> findByTeacher(String teacher);

    /**
     * 根据班级编号查询班级
     *
     * @param classId 班级编号
     * @return 班级对象
     */
    Class findByClassId(String classId);

    /**
     * 检查班级编号是否存在
     *
     * @param classId 班级编号
     * @return 是否存在
     */
    boolean existsByClassId(String classId);
} 